import Vue from "vue";
import mask from "./loading.vue"; // 引入loading实例
const Mask = Vue.extend(mask);
// 返回loadingService服务状态的实例  Loading.service()方式调用
export const MyLoading = (function() {
  let Service = function() {
    var div;
    var loadingMask;
    var loadTime = 0;
    let S = this;
    this.service = function() {
      if(loadTime == 0){
        div = document.createElement("div");
        let child = document.createElement("div");
        div.appendChild(child);
        document.body.appendChild(div);
        loadingMask = new Mask();
        loadingMask.visible = true;
        loadingMask.$mount(child);
      }

      loadTime++
      //此处解决因异常状态下未能正常关闭的loading，延时关闭
      //异常状态下自动关闭,网络请求timeout为20秒，此处设置延时为21秒
      setTimeout(()=>{
        // alert("异常状态下自动关闭loading:")
        S.close();
      },1000 * 21)
    };
    this.close = function() {
      loadTime--;
      if(loadTime <= 0){
        loadTime = 0;
        try{
           loadingMask.visible = false;
           document.body.removeChild(div);
         }catch(e){}
      }

    };
  };
  return new Service();
})();  // 自调用，这样return出来的就可以直接使用了，不用再运行一次
